/**
 * 文  件  名：  DaoFactory.java
 * 工  程  名：  7You
 * 创建日期：  2013-10-13
 * 创建作者：  杨  强
 */
package com.qiyou.dao.factory;

import com.qiyou.dao.IActivityDao;
import com.qiyou.dao.IActivityInvitationDao;
import com.qiyou.dao.IAttendanceDao;
import com.qiyou.dao.IBlogCommentDao;
import com.qiyou.dao.IBlogDao;
import com.qiyou.dao.IFriendDao;
import com.qiyou.dao.IPhotoAlbumDao;
import com.qiyou.dao.IPhotoDao;
import com.qiyou.dao.IPlaceAttestationDao;
import com.qiyou.dao.IRemindInfoDao;
import com.qiyou.dao.IScenicSpotDao;
import com.qiyou.dao.IShuoShuoDao;
import com.qiyou.dao.IThirdAccountDao;
import com.qiyou.dao.IUserDao;
import com.qiyou.dao.IUserInfoDao;
import com.qiyou.dao.proxy.ActivityDaoProxy;
import com.qiyou.dao.proxy.ActivityInvitationDaoProxy;
import com.qiyou.dao.proxy.AttendanceDaoProxy;
import com.qiyou.dao.proxy.BlogCommentDaoProxy;
import com.qiyou.dao.proxy.BlogDaoProxy;
import com.qiyou.dao.proxy.FriendDaoProxy;
import com.qiyou.dao.proxy.PhotoAlbumDaoProxy;
import com.qiyou.dao.proxy.PhotoDaoProxy;
import com.qiyou.dao.proxy.PlaceAttestationDaoProxy;
import com.qiyou.dao.proxy.RemindInfoDaoProxy;
import com.qiyou.dao.proxy.ScenicSpotDaoProxy;
import com.qiyou.dao.proxy.ShuoShuoDaoProxy;
import com.qiyou.dao.proxy.ThirdAccountDaoProxy;
import com.qiyou.dao.proxy.UserDaoProxy;
import com.qiyou.dao.proxy.UserInfoDaoProxy;
import com.qiyou.db.C3P0Database;
import com.qiyou.db.IDatabase;

/**
 * 简单工厂类，外部使用者调用该类的相关静态方法获得相关数据操作对象
 * 
 * @author 杨 强
 * 
 */
public class DaoFactory {
    /**
     * 默认数据源为C3P0数据源
     */
    private static IDatabase database = C3P0Database.getInstance();

    /**
     * 获取数据源
     * 
     * @return 数据源
     */
    public static IDatabase getDatabase() {
        return database;
    }

    /**
     * 设置数据源
     * 
     * @param database
     *            设置数据源
     */
    public static void setDatabase(IDatabase database) {
        DaoFactory.database = database;
    }

    /**
     * 获取一个用户数据操作对象
     * 
     * @return 用户数据操作对象
     */
    public static IUserDao getUserDao() {
        return new UserDaoProxy(database);
    }

    /**
     * 获取一个加入活动数据操作对象
     * 
     * @return 加入活动数据操作对象
     */
    public static IAttendanceDao getAttendanceDao() {
        return new AttendanceDaoProxy(database);
    }

    /**
     * 获取一个活动数据操作对象
     * 
     * @return 活动数据操作对象
     */
    public static IActivityDao getActivityDao() {
        return new ActivityDaoProxy(database);
    }

    /**
     * 获取一个用户信息数据操作对象
     * 
     * @return 用户信息数据操作对象
     */
    public static IUserInfoDao getUserInfoDao() {
        return new UserInfoDaoProxy(database);
    }

    /**
     * 获取一个三方账号数据操作对象
     * 
     * @return 三方账号数据操作对象
     */
    public static IThirdAccountDao getThirdAccountDao() {
        return new ThirdAccountDaoProxy(database);
    }

    /**
     * 获取一个说说数据操作对象
     * 
     * @return 说说数据操作对象
     */
    public static IShuoShuoDao getShuoShuoDao() {
        return new ShuoShuoDaoProxy(database);
    }

    /**
     * 获取一个景点数据操作对象
     * 
     * @return 景点数据操作对象
     */
    public static IScenicSpotDao getScenicSpotDao() {
        return new ScenicSpotDaoProxy(database);
    }

    /**
     * 获取一个提醒消息数据操作对象
     * 
     * @return 提醒消息数据操作对象
     */
    public static IRemindInfoDao getRemindInfoDao() {
        return new RemindInfoDaoProxy(database);
    }

    /**
     * 获取一个活动邀请数据操作对象
     * 
     * @return 活动邀请数据操作对象
     */
    public static IActivityInvitationDao getIActivityInvitationDao() {
        return new ActivityInvitationDaoProxy(database);
    }

    /**
     * 获取一个博客评论数据操作对象
     * 
     * @return 博客评论数据操作对象
     */
    public static IBlogCommentDao getBlogCommentDao() {
        return new BlogCommentDaoProxy(database);
    }

    /**
     * 获取一个博客数据操作对象
     * 
     * @return 博客数据操作对象
     */
    public static IBlogDao getBlogDao() {
        return new BlogDaoProxy(database);
    }

    /**
     * 获取一个好友数据操作对象
     * 
     * @return 好友数据操作对象
     */
    public static IFriendDao getFriendDao() {
        return new FriendDaoProxy(database);
    }

    /**
     * 获取一个相册数据操作对象
     * 
     * @return 相册数据操作对象
     */
    public static IPhotoAlbumDao getPhotoAlbumDao() {
        return new PhotoAlbumDaoProxy(database);
    }

    /**
     * 获取一个相片数据操作对象
     * 
     * @return 相片数据操作对象
     */
    public static IPhotoDao getPhotoDao() {
        return new PhotoDaoProxy(database);
    }

    /**
     * 获取一个实地认证数据操作对象
     * 
     * @return 实地认证数据操作对象
     */
    public static IPlaceAttestationDao getPlaceAttestationDao() {
        return new PlaceAttestationDaoProxy(database);
    }
}
